package cn.stylefeng.guns.modular.time.model.request;

import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

/**
 * 收藏网站请求参数
 *
 * @author 叶新华
 * @date 2025/04/18 11:10
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class BookmarksRequest extends BaseRequest {

    /**
     * 主键
     */
    @NotNull(message = "ID不能为空", groups = {edit.class, delete.class, detail.class})
    @ChineseDescription("主键")
    private Long bookmarkId;

    /**
     * 批量删除的ID列表
     */
    @NotNull(message = "批量删除的ID列表不能为空", groups = {batchDelete.class})
    @ChineseDescription("批量删除的ID列表")
    private List<Long> ids;

    /**
     * 用户ID
     */
    @ChineseDescription("用户ID")
    private Long userId;

    /**
     * 分类ID
     */
    @ChineseDescription("分类ID")
    private Long categoryId;

    /**
     * 网站名称
     */
    @NotBlank(message = "网站名称不能为空", groups = {add.class, edit.class})
    @ChineseDescription("网站名称")
    private String name;

    /**
     * 网站URL
     */
    @NotBlank(message = "网站URL不能为空", groups = {add.class, edit.class})
    @ChineseDescription("网站URL")
    private String url;

    /**
     * 网站图标URL
     */
    @ChineseDescription("网站图标URL")
    private String icon;

    /**
     * 网站描述
     */
    @ChineseDescription("网站描述")
    private String description;

    /**
     * 点击次数
     */
    @ChineseDescription("点击次数")
    private Integer clickCount;

    /**
     * 删除标记：Y-已删除，N-未删除
     */
    @ChineseDescription("删除标记：Y-已删除，N-未删除")
    private String delFlag;

    /**
     * 创建时间
     */
    @ChineseDescription("创建时间")
    private String createTime;

    /**
     * 创建人
     */
    @ChineseDescription("创建人")
    private Long createUser;

    /**
     * 更新时间
     */
    @ChineseDescription("更新时间")
    private String updateTime;

    /**
     * 更新人
     */
    @ChineseDescription("更新人")
    private Long updateUser;

    /**
     * 租户号
     */
    @ChineseDescription("租户号")
    private Long tenantId;

    /**
     * 排序字段
     */
    @ChineseDescription("排序字段")
    private String sortField;

    /**
     * 排序方式
     */
    @ChineseDescription("排序方式")
    private String sortOrder;

    /**
     * 搜索文本
     */
    @ChineseDescription("搜索文本")
    private String searchText;

    /**
     * 添加参数校验分组
     */
    public @interface add {
    }

    /**
     * 编辑参数校验分组
     */
    public @interface edit {
    }

    /**
     * 删除参数校验分组
     */
    public @interface delete {
    }

    /**
     * 详情参数校验分组
     */
    public @interface detail {
    }

    /**
     * 批量删除参数校验分组
     */
    public @interface batchDelete {
    }

    /**
     * 置顶标记：Y-已置顶，N-未置顶
     */
    @ChineseDescription("置顶标记：Y-已置顶，N-未置顶")
    private String pinned;
}